/*
 * @lc app=leetcode.cn id=283 lang=javascript
 *
 * [283] 移动零
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
// var moveZeroes = function(nums) {
//   let result = []
//   let j = 0
//   for (let i = 0; i < nums.length; i++) {
//     const n = nums[i]
//     // 等于0直接加到最后面
//     if (n === 0) {
//       j++
//       result.push(n)
//     } else {
//       const len = result.length
//       // result数组中第一个0前的数字索引
//       const k = len - j - 1
//       if (k >= 0) {
//         const m = result[k]
//         console.log(k, i, len, j, result, 123, m, n)
//         if (m > n) {
//           result.splice(k, 0, n)
//         } else {
//           result.splice(k + 1, 0, n)
//         }
//       } else {
//         // 小于0说明，数组前面没有大于0的数据，直接加到最前面
//         result.unshift(n)
//       }
//     }
//   }
//   console.log(result)
//   return result
// }
// var moveZeroes = function(nums) {
//   nums.sort((a, b) => b ? 0 : -1)
//   return nums
// };
var moveZeroes = function(nums) {
  let j = 0; 
  const len = nums.length
  for (let i = 0; i < len; i++) {
    const n = nums[i]
    if (n !== 0) {
      if (j !== i) {
        nums[j] = n
        nums[i] = 0
      }
      j++
    }
  }
  return nums
};
// @lc code=end

